﻿
namespace LM.Negocio.Validadores
{
    using LM.InterfacesFabricas.Excecoes;
    using System.Collections.Generic;

    public abstract class ValidadorAbastrato
    {
        private List<string> _inconsistencias = new List<string>();

        protected void GarantaSucesso()
        {
            if (_inconsistencias.Count > 0)
            {
                throw new InconsistenciasException(_inconsistencias);
            }
        }

        protected void LimpeInconsistencias()
        {
            _inconsistencias = new List<string>();
        }
        
        protected void AdicioneInconsistencia(string mensagemDeInconsistencia)
        {
            if (!_inconsistencias.Contains(mensagemDeInconsistencia))
            {
                _inconsistencias.Add(mensagemDeInconsistencia);
            }
        }

        protected void AdicioneInconsistencia(string mensagemDeInconsistencia, params object[] args)
        {
            if (!_inconsistencias.Contains(mensagemDeInconsistencia))
            {
                _inconsistencias.Add(string.Format(mensagemDeInconsistencia, args));
            }
        }
    }
}
